package day230418;

/**
 * @author 兴趣使然黄小黄
 * @version 1.0
 * @date 2023/4/18 8:43
 * 跳台阶扩展问题
 */
public class Solution {
    /**
     * @param number int整型
     * @return int整型
     */
    public int jumpFloorII (int number) {
        // 对于每一个台阶来说, 有跳和不跳两种方式
        // 跳到第 n 级台阶, 需要跳过 n - 1 个台阶, 即有 2^(n-1) 种可能
        // 1 << 1 -> 1 * 2 ^ 1
        // 1 << 2 -> 1 * 2 ^ 2
        return 1 << (number - 1);
    }

    public int jumpFloorIII (int number) {
        // 对于每一个台阶来说, 有跳和不跳两种方式
        // 跳到第 n 级台阶, 需要跳过 n - 1 个台阶, 即有 2^(n-1) 种可能
        // 1 << 1 -> 1 * 2 ^ 1
        // 1 << 2 -> 1 * 2 ^ 2
        return (int) Math.pow(2, number - 1);
    }
}
